package cn.kgm.user.server.struct;

import cn.kgm.user.dto.dto.UserRegisterDTO;
import cn.kgm.user.dto.dto.UserSaveDTO;
import cn.kgm.user.dto.dto.UserUpdateDTO;
import cn.kgm.user.dto.entity.User;
import cn.kgm.user.dto.query.UserPageQuery;
import cn.kgm.user.dto.vo.UserVO;
import org.mapstruct.Builder;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

/**
 * # 技术改变自己 #
 * 用户基础表
 * @author kappi
 * @date   2024-04-08 13:28:48
 */
@Mapper(builder = @Builder(disableBuilder = true))
public interface UserMappers {
    UserMappers INSTANCE = Mappers.getMapper(UserMappers.class);

    /**
     * 将 UserSaveDTO 映射成 User 对象
     *
     * @param source 源对象
     * @return User
     */
    User mapToEntity(UserSaveDTO source);

    /**
     * 将 UserUpdateDTO 映射成 User 对象
     *
     * @param source 源对象
     * @return User
     */
    User mapToEntity(UserUpdateDTO source);

    /**
     * UserPageQuery 映射成 User 对象
     *
     * @param source 源对象
     * @return User
     */
    User mapToEntity(UserPageQuery source);

    /**
     * UserPageQuery 映射成 User 对象
     *
     * @param source 源对象
     * @return UserVO
     */
    UserVO mapToEntity(User source);

    /**
     * UserRegisterDTO 映射成 User 对象
     *
     * @param source 源对象
     * @return User
     */
    User mapToEntity(UserRegisterDTO source);

}
